'''
1.确定对象及其属性和方法
2.分析对象之间的联系，确定其通信机制
3.将具有共同特性的对象抽象为对象类
4.设计。实现类，并确定类相互间的继承关系‘
5.设置其中一个类的属性并不会影响到另一个对象的属性
#类的使用
class book:
    author=''
    name=''
    page=0
    price=0
    press=''
    
#调用
a=book()#book类实例化---查看a
a.author          #访问author对象
a.page#访问page对象，输出为0

a.author='TOM'#为auth设置属性
#再次输出a.author对象
a.author#输出值为TOM


#私有属性与共有属性
#私有属性---以双下划线开头的，不允许外部访问或调用
#若在类的内部调用私有属性，则需要在前面加上self

class book:
    __author=''
    __name=''
    __page=0
    price=100#公有属性
    __press=''#私有属性
    
a=book()
a.__author#试图访问私有属性返回错误

#定义类方法
class book:
    __author=''
    __name=''
    __page=0
    price=0
    __press=''
    def show(self):        #定义show（）方法，其参数必须为self
        print(self.__author) #输出类的私有属性
        print(self.__name)
    def setname(self,name):#定义setname（）方法，其中有两个参数
        self.__name=name #设置__name=name的私有属性
#调用
a=book()
#a.show()#调用show方法，输出为空，因为其私有全部为空

a.setname('TOM')#调用setname（）方法，但只向其传入一个参数
a.show()#调用show（）方法

#类的私有----只在类的内部进行调用
class book:
    __author=''
    __name=''
    __page=0
    price=0
    __press=''
    def __check(self,item):  #定义__check()私有方法
        if item=='':
            return 0
        else:
            return 1
    def show(self):
        if self.__check(self.__author):#判断__author是否为空
            print(self.__author)
        else:
            print('NO value')
        if self.__check(self.__name):
            print(self.__name)
        else:
            print('No values')
    def setname(self,name):#定义setname方法
        self.__name=name

a=book()#实例化

#调用show（）方法
a.show()

#给__name属性传入值
a.setname('TOM')
a.show()

a.__check()#调用类的私有方法，结果导致出错
'''
